'use strict';
const path     = require( "path" );
module.exports = appInfo => {
    const config = exports = {};

    // use for cookie sign key, should change to your own and keep security
    config.keys = appInfo.name + '_1513848802510_9867';

    // add your config here
    config.middleware = ["gzip"];

    config.gzip         = {
        threshold: 1024, // 小于 1k 的响应体不压缩
        match    : '/'
    };

    config.customLogger = {
        ryanLogger: {
            file: path.join( appInfo.root, 'logs/custom.log' ),
        },
    };

    config.bodyParser = {
        jsonLimit: '1mb',
        formLimit: '1mb',
    };
    config.multipart  = {
        fileExtensions: ['.apk'], // 增加对 .apk 扩展名的支持
    };
    config.logger     = {
        encoding: 'gbk',
    };
    config.view       = {
        defaultViewEngine: 'nunjucks',
        defaultExtension : '.html',
        mapping          : {
            '.html': 'nunjucks',
        },
    };
    config.nunjucks   = {
        // dir: 'path/to/template/dir',  // default to `{app_root}/app/view`
        cache: true,                  // local env is false
    };
    config.redis      = {
        client: {
            port    : 6379,          // Redis port
            host    : '172.18.1.7',   // Redis host
            password: "",
            db      : 1
        }
    };
    config.session    = {
        maxAge  : 24 * 3600 * 1000, // ms
        key     : 'RYAN_SESS',
        httpOnly: true,
        encrypt : true,
    };

    config.httpclient = {
        // 是否开启本地 DNS 缓存，默认关闭，开启后有两个特性
        // 1. 所有的 DNS 查询都会默认优先使用缓存的，即使 DNS 查询错误也不影响应用
        // 2. 对同一个域名，在 dnsCacheLookupInterval 的间隔内（默认 10s）只会查询一次
        enableDNSCache        : false,
        // 对同一个域名进行 DNS 查询的最小间隔时间
        dnsCacheLookupInterval: 10000,
        // DNS 同时缓存的最大域名数量，默认 1000
        dnsCacheMaxLength     : 1000,

        request: {
            // 默认 request 超时时间
            timeout: 3000,
        },

        httpAgent: {
            // 默认开启 http KeepAlive 功能
            keepAlive                 : true,
            // 空闲的 KeepAlive socket 最长可以存活 4 秒
            freeSocketKeepAliveTimeout: 4000,
            // 当 socket 超过 30 秒都没有任何活动，就会被当作超时处理掉
            timeout                   : 30000,
            // 允许创建的最大 socket 数
            maxSockets                : Number.MAX_SAFE_INTEGER,
            // 最大空闲 socket 数
            maxFreeSockets            : 256,
        },

        httpsAgent: {
            // 默认开启 https KeepAlive 功能
            keepAlive                 : true,
            // 空闲的 KeepAlive socket 最长可以存活 4 秒
            freeSocketKeepAliveTimeout: 4000,
            // 当 socket 超过 30 秒都没有任何活动，就会被当作超时处理掉
            timeout                   : 30000,
            // 允许创建的最大 socket 数
            maxSockets                : Number.MAX_SAFE_INTEGER,
            // 最大空闲 socket 数
            maxFreeSockets            : 256,
        },
    };

    config.sequelize = {
        dialect : 'postgres', // support: mysql, mariadb, postgres, mssql
        database: 'node_music_weapon',
        host    : '172.18.1.7',
        port    : '9988',
        username: 'dev',
        password: 'password',
    };
    config.security = {
        ctoken: false,
        csrf: false,
    };

    config.alinode = {
        server: 'wss://agentserver.node.aliyun.com:8080',
        appid: '1057',
        secret: '3827eef210446f179845f1c0bce2948f56b29b62',

    };
    return config;
};
